<!DOCTYPE html>
<html>

<head>
	<meta charset="utf-8">
	<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
	<meta name="theme-color" content="#33474d">
	<title>失落的乐章</title>
	<link rel="stylesheet" href="/css/style.css" />
	
      <link rel="alternate" href="/atom.xml" title="失落的乐章" type="application/atom+xml">
    
</head>

<body>

	<header class="header">
		<nav class="header__nav">
			
				<a href="/archives" class="header__link">Archive</a>
			
				<a href="/tags" class="header__link">Tags</a>
			
				<a href="/atom.xml" class="header__link">RSS</a>
			
		</nav>
		<h1 class="header__title"><a href="/">失落的乐章</a></h1>
		<h2 class="header__subtitle">技术面前，永远都是学生。</h2>
	</header>

	<main>
		
	<span class="different-posts different-posts_earlier">📖 <a href="/page/60">earlier posts</a> 📖</span>




	<article>
	
		<h1><a href="/2017/10/12/1. Linux 基础/33. vim给文件加密/">vim给文件加密</a></h1>
	
	<div class="article__infos">
		<span class="article__date">2017-10-12</span><br />
		
		
			<span class="article__tags">
			  	<a class="article__tag-link" href="/tags/Linux/">Linux</a>
			</span>
		
	</div>

	

	
		<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Linux用vim/vi给文件加密和解密</p>
<h2 id="一、利用-vim-加密："><a href="#一、利用-vim-加密：" class="headerlink" title="一、利用 vim 加密："></a>一、利用 vim 加密：</h2><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;优点：加密后，如果不知道密码，就看不到明文，包括root用户也看不了；</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;缺点：很明显让别人知道加密了，容易让别人把加密的文件破坏掉，包括内容破坏和删除；</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;vi编辑器相信大家都很熟悉了吧，vi里有一个命令是给文件加密的，举个例子吧：</p>
<ol>
<li>首先在root主目录/root/下建立一个实验文件text.txt：</li>
</ol>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">[root@www ~]<span class="comment">#  vim/vi  text.txt</span></div></pre></td></tr></table></figure>
<ol>
<li>进到编辑模式，输入完内容后按ESC，然后输入:X（注意是大写的X），回车；</li>
<li>这时系统提示让你输入密码，2次，如下所示：</li>
</ol>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div></pre></td><td class="code"><pre><div class="line">输入密码: *******</div><div class="line">请再输入一次: *******</div></pre></td></tr></table></figure>
<ol>
<li><p>保存后退出，现在这个文件已经加密了；</p>
</li>
<li><p>用cat或more查看文件内容，显示为乱码；用 vim重新编辑这个文件，会提示输入密码，如果输入的密码不正确，同样会显示为乱码！</p>
</li>
</ol>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>注意</strong>：文件加密后，千万别忘了密码！</p>
<h2 id="二、解密用vi加密的文件（前提是你知道加密的密码）："><a href="#二、解密用vi加密的文件（前提是你知道加密的密码）：" class="headerlink" title="二、解密用vi加密的文件（前提是你知道加密的密码）："></a>二、解密用vi加密的文件（前提是你知道加密的密码）：</h2><ol>
<li>用 vim 打开文件如text.txt，要输入正确的密码，然后在编辑时，将密码设置为空，方法是输入下面的命令：</li>
</ol>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">：<span class="built_in">set</span> key=</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;然后直接回车，保存文件后，文件已经解密了。</p>
<ol>
<li>或者这样也行：在正确打开文件后用 “<code>:X</code>” 指令，然后给一个空密码也可以。保存用“<code>wq!</code>”保存。</li>
</ol>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;两种方法实际上效果是一样的。</p>

	

	

</article>




	<article>
	
		<h1><a href="/2017/10/12/1. Linux 基础/32. vim设置设置自动缩进/">vim设置自动缩进</a></h1>
	
	<div class="article__infos">
		<span class="article__date">2017-10-12</span><br />
		
		
			<span class="article__tags">
			  	<a class="article__tag-link" href="/tags/Linux/">Linux</a>
			</span>
		
	</div>

	

	
		<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;centos系统，修改vim的配置文件 /etc/vimrc</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;添加如下内容：<br>1)  打开 vimrc ，添加以下语句来使得语法高亮显示：<br>syntax on<br>2)  如果此时语法还是没有高亮显示，那么在 /etc 目录下的 profile 文件中添加以下语句：<br>export TERM=xterm-color<br>3) 解决方向键和退格键失效的问题（采用非兼容模式）<br>set nocompatible<br>set backspace=2<br>4) 设置 Windows 风格的 C/C++ 自动缩进（添加以下 set 语句到 vimrc 中）</p>
<ul>
<li>设置（软）制表符宽度为 4 ：<br>set tabstop=4<br>set softtabstop=4</li>
<li>设置缩进的空格数为 4<br>set shiftwidth=4</li>
<li>设置自动缩进 ：即每行的缩进值与上一行相等；使用  noautoindent  取消设置：<br>set autoindent</li>
<li>设置 使用  C/C++  语言的自动缩进方式：<br>set cindent</li>
<li>设置 C/C++ 语言的具体缩进方式 ：<br>set cinoptions={0,1s,t0,n-2,p2s,(03s,=.5s,&gt;1s,=1s,:1s</li>
<li>如果想在左侧显示文本的行号，可以用以下语句：<br>set nu</li>
<li>最后，如果没有下列语句，就加上吧:</li>
</ul>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div></pre></td><td class="code"><pre><div class="line"><span class="keyword">if</span> &amp;term==<span class="string">"xterm"</span></div><div class="line"><span class="built_in">set</span> t_Co=8</div><div class="line">             <span class="built_in">set</span> t_Sb=^[[4%dm</div><div class="line"><span class="built_in">set</span> t_Sf=^[[3%dm</div><div class="line">endif</div></pre></td></tr></table></figure>
	

	

</article>




	<article>
	
		<h1><a href="/2017/10/12/1. Linux 基础/31. vim的设置详解/">vim的设置详解</a></h1>
	
	<div class="article__infos">
		<span class="article__date">2017-10-12</span><br />
		
		
			<span class="article__tags">
			  	<a class="article__tag-link" href="/tags/Linux/">Linux</a>
			</span>
		
	</div>

	

	
		<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;vim通过一个叫vimrc的文件来进行设置</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;vimrc 配置文件存放位置：</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;系统vimrc在 /etc/vimrc</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;用户的在 $HOME/.vimrc   这个默认不存在，需用户自定义创建。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;下面介绍vimrc中常用的配置选项，其中以”为开头的行为不生效的行，也就是说在vimrc配置文件中，它是以”为注释符号的：</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div><div class="line">15</div><div class="line">16</div><div class="line">17</div><div class="line">18</div><div class="line">19</div><div class="line">20</div><div class="line">21</div><div class="line">22</div><div class="line">23</div><div class="line">24</div><div class="line">25</div><div class="line">26</div><div class="line">27</div><div class="line">28</div><div class="line">29</div><div class="line">30</div><div class="line">31</div><div class="line">32</div><div class="line">33</div><div class="line">34</div><div class="line">35</div><div class="line">36</div><div class="line">37</div><div class="line">38</div><div class="line">39</div><div class="line">40</div><div class="line">41</div><div class="line">42</div><div class="line">43</div><div class="line">44</div><div class="line">45</div><div class="line">46</div><div class="line">47</div><div class="line">48</div><div class="line">49</div><div class="line">50</div><div class="line">51</div><div class="line">52</div><div class="line">53</div><div class="line">54</div><div class="line">55</div><div class="line">56</div><div class="line">57</div><div class="line">58</div><div class="line">59</div><div class="line">60</div><div class="line">61</div><div class="line">62</div><div class="line">63</div><div class="line">64</div><div class="line">65</div><div class="line">66</div><div class="line">67</div><div class="line">68</div><div class="line">69</div><div class="line">70</div><div class="line">71</div><div class="line">72</div><div class="line">73</div><div class="line">74</div><div class="line">75</div><div class="line">76</div><div class="line">77</div><div class="line">78</div><div class="line">79</div><div class="line">80</div><div class="line">81</div><div class="line">82</div><div class="line">83</div><div class="line">84</div><div class="line">85</div><div class="line">86</div><div class="line">87</div><div class="line">88</div><div class="line">89</div><div class="line">90</div><div class="line">91</div><div class="line">92</div><div class="line">93</div><div class="line">94</div><div class="line">95</div><div class="line">96</div><div class="line">97</div><div class="line">98</div><div class="line">99</div><div class="line">100</div><div class="line">101</div><div class="line">102</div><div class="line">103</div><div class="line">104</div><div class="line">105</div><div class="line">106</div><div class="line">107</div><div class="line">108</div><div class="line">109</div><div class="line">110</div><div class="line">111</div><div class="line">112</div><div class="line">113</div><div class="line">114</div><div class="line">115</div><div class="line">116</div><div class="line">117</div><div class="line">118</div><div class="line">119</div><div class="line">120</div><div class="line">121</div><div class="line">122</div><div class="line">123</div><div class="line">124</div><div class="line">125</div><div class="line">126</div><div class="line">127</div><div class="line">128</div><div class="line">129</div><div class="line">130</div><div class="line">131</div><div class="line">132</div><div class="line">133</div><div class="line">134</div><div class="line">135</div><div class="line">136</div><div class="line">137</div><div class="line">138</div><div class="line">139</div><div class="line">140</div><div class="line">141</div><div class="line">142</div><div class="line">143</div><div class="line">144</div><div class="line">145</div><div class="line">146</div><div class="line">147</div><div class="line">148</div><div class="line">149</div><div class="line">150</div><div class="line">151</div><div class="line">152</div><div class="line">153</div><div class="line">154</div><div class="line">155</div><div class="line">156</div><div class="line">157</div><div class="line">158</div><div class="line">159</div><div class="line">160</div><div class="line">161</div><div class="line">162</div><div class="line">163</div><div class="line">164</div><div class="line">165</div><div class="line">166</div><div class="line">167</div><div class="line">168</div><div class="line">169</div><div class="line">170</div><div class="line">171</div><div class="line">172</div><div class="line">173</div><div class="line">174</div><div class="line">175</div><div class="line">176</div><div class="line">177</div><div class="line">178</div><div class="line">179</div><div class="line">180</div><div class="line">181</div><div class="line">182</div><div class="line">183</div><div class="line">184</div><div class="line">185</div><div class="line">186</div></pre></td><td class="code"><pre><div class="line"><span class="built_in">set</span> nobackup</div><div class="line"></div><div class="line"><span class="string">" 不要生成swap文件，当buffer被丢弃的时候隐藏它</span></div><div class="line"><span class="string">setlocal noswapfile</span></div><div class="line"><span class="string">set bufhidden=hide</span></div><div class="line"><span class="string"></span></div><div class="line"><span class="string">"</span> 字符间插入的像素行数目</div><div class="line"><span class="built_in">set</span> linespace=0</div><div class="line"></div><div class="line"><span class="string">" 增强模式中的命令行自动完成操作</span></div><div class="line"><span class="string">set wildmenu</span></div><div class="line"><span class="string"></span></div><div class="line"><span class="string">"</span> 在状态行上显示光标所在位置的行号和列号</div><div class="line"><span class="built_in">set</span> ruler</div><div class="line"><span class="built_in">set</span> rulerformat=%20(%2*%&lt;%f%=\ %m%r\ %3l\ %c\ %p%%%)</div><div class="line"></div><div class="line"><span class="string">" 命令行（在状态行下）的高度，默认为1，这里是2</span></div><div class="line"><span class="string">set cmdheight=2</span></div><div class="line"><span class="string"></span></div><div class="line"><span class="string">"</span> 使回格键（backspace）正常处理indent, eol, start等</div><div class="line"><span class="built_in">set</span> backspace=2</div><div class="line"></div><div class="line"><span class="string">" 允许backspace和光标键跨越行边界</span></div><div class="line"><span class="string">set whichwrap+=&lt;,&gt;,h,l</span></div><div class="line"><span class="string"></span></div><div class="line"><span class="string">"</span> 可以在buffer的任何地方使用鼠标（类似office中在工作区双击鼠标定位）</div><div class="line"><span class="built_in">set</span> mouse=a</div><div class="line"><span class="built_in">set</span> selection=exclusive</div><div class="line"><span class="built_in">set</span> selectmode=mouse,key</div><div class="line"></div><div class="line"><span class="string">" 启动的时候不显示那个援助索马里儿童的提示</span></div><div class="line"><span class="string">set shortmess=atI</span></div><div class="line"><span class="string"></span></div><div class="line"><span class="string">"</span> 通过使用: commands命令，告诉我们文件的哪一行被改变过</div><div class="line"><span class="built_in">set</span> report=0</div><div class="line"></div><div class="line"><span class="string">" 不让vim发出讨厌的滴滴声</span></div><div class="line"><span class="string">set noerrorbells</span></div><div class="line"><span class="string"></span></div><div class="line"><span class="string">"</span> 在被分割的窗口间显示空白，便于阅读</div><div class="line"><span class="built_in">set</span> fillchars=vert:\ ,stl:\ ,stlnc:\</div><div class="line"></div><div class="line"><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">"</span></div><div class="line"><span class="string">"</span> 搜索和匹配</div><div class="line"><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">"</span></div><div class="line"><span class="string">"</span> 高亮显示匹配的括号</div><div class="line"><span class="built_in">set</span> showmatch</div><div class="line"></div><div class="line"><span class="string">" 匹配括号高亮的时间（单位是十分之一秒）</span></div><div class="line"><span class="string">set matchtime=5</span></div><div class="line"><span class="string"></span></div><div class="line"><span class="string">"</span> 在搜索的时候忽略大小写</div><div class="line"><span class="built_in">set</span> ignorecase</div><div class="line"></div><div class="line"><span class="string">" 不要高亮被搜索的句子（phrases）</span></div><div class="line"><span class="string">set nohlsearch</span></div><div class="line"><span class="string"></span></div><div class="line"><span class="string">"</span> 在搜索时，输入的词句的逐字符高亮（类似firefox的搜索）</div><div class="line"><span class="built_in">set</span> incsearch</div><div class="line"></div><div class="line"><span class="string">" 输入:set list命令是应该显示些啥？</span></div><div class="line"><span class="string">set listchars=tab:\|\ ,trail:.,extends:&gt;,precedes:&lt;,eol:$</span></div><div class="line"><span class="string"></span></div><div class="line"><span class="string">"</span> 光标移动到buffer的顶部和底部时保持3行距离</div><div class="line"><span class="built_in">set</span> scrolloff=3</div><div class="line"></div><div class="line"><span class="string">" 不要闪烁</span></div><div class="line"><span class="string">set novisualbell</span></div><div class="line"><span class="string"></span></div><div class="line"><span class="string">"</span> 我的状态行显示的内容（包括文件类型和解码）</div><div class="line"><span class="built_in">set</span> statusline=%F%m%r%h%w\[POS=%l,%v][%p%%]\%&#123;strftime(\<span class="string">"%d/%m/%y\ -\ %H:%M\")&#125;</span></div><div class="line"><span class="string"></span></div><div class="line"><span class="string">"</span> 总是显示状态行</div><div class="line"><span class="built_in">set</span> laststatus=2</div><div class="line"></div><div class="line"><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">"</span></div><div class="line"><span class="string">"</span> 文本格式和排版</div><div class="line"><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">"</span></div><div class="line"><span class="string">"</span> 自动格式化</div><div class="line"><span class="built_in">set</span> formatoptions=tcrqn</div><div class="line"></div><div class="line"><span class="string">" 继承前一行的缩进方式，特别适用于多行注释</span></div><div class="line"><span class="string">set autoindent</span></div><div class="line"><span class="string"></span></div><div class="line"><span class="string">"</span> 为C程序提供自动缩进</div><div class="line"><span class="built_in">set</span> smartindent</div><div class="line"></div><div class="line"><span class="string">" 使用C样式的缩进</span></div><div class="line"><span class="string">set cindent</span></div><div class="line"><span class="string"></span></div><div class="line"><span class="string">"</span> 制表符为4</div><div class="line"><span class="built_in">set</span> tabstop=4</div><div class="line"></div><div class="line"><span class="string">" 统一缩进为4</span></div><div class="line"><span class="string">set softtabstop=4</span></div><div class="line"><span class="string">set shiftwidth=4</span></div><div class="line"><span class="string"></span></div><div class="line"><span class="string">"</span> 不要用空格代替制表符</div><div class="line"><span class="built_in">set</span> noexpandtab</div><div class="line"></div><div class="line"><span class="string">" 不要换行</span></div><div class="line"><span class="string">set nowrap</span></div><div class="line"><span class="string"></span></div><div class="line"><span class="string">"</span> 在行和段开始处使用制表符</div><div class="line"><span class="built_in">set</span> smarttab</div><div class="line"></div><div class="line"><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">"</span></div><div class="line"><span class="string">"</span> CTags的设定</div><div class="line"><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">"</span></div><div class="line"><span class="string">"</span> 按照名称排序</div><div class="line"><span class="built_in">let</span> Tlist_Sort_Type = <span class="string">"name"</span></div><div class="line"></div><div class="line"><span class="string">" 在右侧显示窗口</span></div><div class="line"><span class="string">let Tlist_Use_Right_Window = 1</span></div><div class="line"><span class="string"></span></div><div class="line"><span class="string">"</span> 压缩方式</div><div class="line"><span class="built_in">let</span> Tlist_Compart_Format = 1</div><div class="line"></div><div class="line"><span class="string">" 如果只有一个buffer，kill窗口也kill掉buffer</span></div><div class="line"><span class="string">let Tlist_Exist_OnlyWindow = 1</span></div><div class="line"><span class="string"></span></div><div class="line"><span class="string">"</span> 不要关闭其他文件的tags</div><div class="line"><span class="built_in">let</span> Tlist_File_Fold_Auto_Close = 0</div><div class="line"></div><div class="line"><span class="string">" 不要显示折叠树</span></div><div class="line"><span class="string">let Tlist_Enable_Fold_Column = 0</span></div><div class="line"><span class="string"></span></div><div class="line"><span class="string">"</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span></div><div class="line"><span class="string">" Autocommands</span></div><div class="line"><span class="string">"</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span><span class="string">""</span></div><div class="line"><span class="string">" 只在下列文件类型被侦测到的时候显示行号，普通文本文件不显示</span></div><div class="line"><span class="string"></span></div><div class="line"><span class="string">if has("</span>autocmd<span class="string">")</span></div><div class="line"><span class="string">autocmd FileType xml,html,c,cs,java,perl,shell,bash,cpp,python,vim,php,ruby set number</span></div><div class="line"><span class="string">autocmd FileType xml,html vmap 'o'&gt;o--&gt;</span></div><div class="line"><span class="string">autocmd FileType java,c,cpp,cs vmap ' 0 &amp;&amp; line("</span><span class="string">'\"") &lt;= line("$") |</span></div><div class="line"><span class="string">\ exe " normal g`\"" |</span></div><div class="line"><span class="string">\ endif</span></div><div class="line"><span class="string">endif "has("autocmd")</span></div><div class="line"><span class="string"></span></div><div class="line"><span class="string">" F5编译和运行C程序，F6编译和运行C++程序</span></div><div class="line"><span class="string">" 请注意，下述代码在windows下使用会报错</span></div><div class="line"><span class="string">" 需要去掉./这两个字符</span></div><div class="line"><span class="string"></span></div><div class="line"><span class="string">" C的编译和运行</span></div><div class="line"><span class="string">map  :call CompileRunGcc()</span></div><div class="line"><span class="string">func! CompileRunGcc()</span></div><div class="line"><span class="string">exec "w"</span></div><div class="line"><span class="string">exec "!gcc % -o %&lt;"</span></div><div class="line"><span class="string">exec "! ./%&lt;"</span></div><div class="line"><span class="string">endfunc</span></div><div class="line"><span class="string"></span></div><div class="line"><span class="string">" C++的编译和运行</span></div><div class="line"><span class="string">map  :call CompileRunGpp()</span></div><div class="line"><span class="string">func! CompileRunGpp()</span></div><div class="line"><span class="string">exec "w"</span></div><div class="line"><span class="string">exec "!g++ % -o %&lt;"</span></div><div class="line"><span class="string">exec "! ./%&lt;"</span></div><div class="line"><span class="string">endfunc</span></div><div class="line"><span class="string"></span></div><div class="line"><span class="string">" 能够漂亮地显示.NFO文件</span></div><div class="line"><span class="string">set encoding=utf-8</span></div><div class="line"><span class="string">function! SetFileEncodings(encodings)</span></div><div class="line"><span class="string">let b:myfileencodingsbak=&amp;fileencodings</span></div><div class="line"><span class="string">let &amp;fileencodings=a:encodings</span></div><div class="line"><span class="string">endfunction</span></div><div class="line"><span class="string">function! RestoreFileEncodings()</span></div><div class="line"><span class="string">let &amp;fileencodings=b:myfileencodingsbak</span></div><div class="line"><span class="string">unlet b:myfileencodingsbak</span></div><div class="line"><span class="string">endfunction</span></div><div class="line"><span class="string"></span></div><div class="line"><span class="string">au BufReadPre *.nfo call SetFileEncodings('</span>cp437<span class="string">')|set ambiwidth=single au BufReadPost *.nfo call RestoreFileEncodings()</span></div><div class="line"><span class="string"></span></div><div class="line"><span class="string">" 高亮显示普通txt文件（需要txt.vim脚本）</span></div><div class="line"><span class="string">au BufRead,BufNewFile * setfiletype txt</span></div><div class="line"><span class="string"></span></div><div class="line"><span class="string">" 用空格键来开关折叠</span></div><div class="line"><span class="string">set foldenable</span></div><div class="line"><span class="string">set foldmethod=manual</span></div><div class="line"><span class="string">nnoremap  @=((foldclosed(line('</span>.<span class="string">')) &lt; 0) ? '</span>zc<span class="string">':'</span>zo<span class="string">')</span></div><div class="line"><span class="string"></span></div><div class="line"><span class="string">" minibufexpl插件的一般设置</span></div><div class="line"><span class="string">let g:miniBufExplMapWindowNavVim = 1</span></div><div class="line"><span class="string">let g:miniBufExplMapWindowNavArrows = 1</span></div><div class="line"><span class="string">let g:miniBufExplMapCTabSwitchBufs = 1</span></div><div class="line"><span class="string">let g:miniBufExplModSelTarget = 1</span></div></pre></td></tr></table></figure>
	

	

</article>




	<article>
	
		<h1><a href="/2017/10/12/1. Linux 基础/30. vim编辑器里面一些不为人知的操作/">vim编辑器里面一些不为人知的操作</a></h1>
	
	<div class="article__infos">
		<span class="article__date">2017-10-12</span><br />
		
		
			<span class="article__tags">
			  	<a class="article__tag-link" href="/tags/Linux/">Linux</a>
			</span>
		
	</div>

	

	
		<h2 id="1-vim编辑器的替换模式与可视模式"><a href="#1-vim编辑器的替换模式与可视模式" class="headerlink" title="1.vim编辑器的替换模式与可视模式"></a>1.vim编辑器的替换模式与可视模式</h2><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;在一般模式下按键盘上的<code>r</code>和<code>R</code>进入替换模式。如果按小r那么这时候就进入了替换模式，你下一个输入的字符会把你当前光标所在处的字符替换，然后自动退出替换模式。如果你按的是大R那么你下面输入的所有字符会把后面的字符依次替换，直到按退出替换模式。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;在一般模式下按键盘上的<code>v</code>和<code>V</code>进入可视模式。如果是按小v那么这时候就时入了视图模式，这时候你移动光标会把你光标所在处到光标结尾处的所有字符选中，这时候可以进行复制，删除等操作。如果是按大V同样也是进入了视图模式，这时候移动光标会把光标所在行到光标结尾的行的所有内容选中，也可以进行复制，删除等操作。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>注意</strong>：使用在一般模式使用“ctrl+v”组合键可以进入块操作模式</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;在这个模式下和可视模式差不多，但是选择的内容不同，大家可实际操作看看</p>
<h2 id="2-删除从光标所在处到行尾字符"><a href="#2-删除从光标所在处到行尾字符" class="headerlink" title="2.删除从光标所在处到行尾字符"></a>2.删除从光标所在处到行尾字符</h2><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;在一般模式下输入大写“<code>Ｄ</code>”或者输入“<code>d$</code>”</p>
<h2 id="3-删除从光标所在处到行首字符"><a href="#3-删除从光标所在处到行首字符" class="headerlink" title="3.删除从光标所在处到行首字符"></a>3.删除从光标所在处到行首字符</h2><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;在一般模式下输入大写“<code>d^</code>”</p>
<h2 id="4-删除从光标所在行到文件末尾行"><a href="#4-删除从光标所在行到文件末尾行" class="headerlink" title="4.删除从光标所在行到文件末尾行"></a>4.删除从光标所在行到文件末尾行</h2><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;在一般模式下输入大写“<code>dG</code>”</p>
<h2 id="5-删除指定范围内所有行"><a href="#5-删除指定范围内所有行" class="headerlink" title="5.删除指定范围内所有行"></a>5.删除指定范围内所有行</h2><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;例：删除10到15行的所有内容<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;在一般模式下输入“:10,15d”回车</p>
<h2 id="6-把正在编辑的文件另存为新文件"><a href="#6-把正在编辑的文件另存为新文件" class="headerlink" title="6.把正在编辑的文件另存为新文件"></a>6.把正在编辑的文件另存为新文件</h2><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;例：把正在编辑的文件另存为到“/root/”下面并保存为1.txt<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;在一般模式下输入“<code>:w /root/1.txt</code>”</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;例：把正在编辑的文件的第10行到第15行另存为1.txt并保存到root目录下在一般模式下输入“<code>:10,15 w /root/1.txt</code>”</p>
<h2 id="7-把其它文件的内容导入到正在编辑的文件的光标所在处"><a href="#7-把其它文件的内容导入到正在编辑的文件的光标所在处" class="headerlink" title="7.把其它文件的内容导入到正在编辑的文件的光标所在处"></a>7.把其它文件的内容导入到正在编辑的文件的光标所在处</h2><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;例：把“/root/1.txt” 文件的内容，导入到下在编辑的文件的第10行下面<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;首先在一般模式下按“<code>10G</code>”把光标定位到第10行<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;然后按“<code>o</code>”小写，当前行的下面另起一行，并进入插入模式<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;最后按键盘上的返回到一般模式，再输入“<code>:r /root/1.txt</code>”回车</p>
<h2 id="8-正在编辑文件时，不退出文件仍可以运行linux命令"><a href="#8-正在编辑文件时，不退出文件仍可以运行linux命令" class="headerlink" title="8.正在编辑文件时，不退出文件仍可以运行linux命令"></a>8.正在编辑文件时，不退出文件仍可以运行linux命令</h2><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;例：我下在编辑一个文件，但这时候我想查看“/root/1.txt” 文件的内容，但是我不想退出我正在编辑的文件，那么我们可以这样<br>在编辑模式下输入“<code>:! cat /root/1.txt</code>”</p>
<h2 id="9-把命令的执行结果导入到正在编辑的文件的光标所在处"><a href="#9-把命令的执行结果导入到正在编辑的文件的光标所在处" class="headerlink" title="9.把命令的执行结果导入到正在编辑的文件的光标所在处"></a>9.把命令的执行结果导入到正在编辑的文件的光标所在处</h2><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;这题我们可以结合上面两题，在一般模式下输入“<code>:r ! cat /root/1.txt</code>”</p>
<h2 id="10-查找替换的功能使用"><a href="#10-查找替换的功能使用" class="headerlink" title="10.查找替换的功能使用"></a>10.查找替换的功能使用</h2><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;例：在10到15行的行首增加“#”<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;在一般模式下输入“<code>:10,15s/^/#/</code>”</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;例：在10到15行的行首去掉“#”<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;在一般模式下输入“<code>:10,15s/^#//</code>”</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;例：在10到15行的行首增加“//”<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;在一般模式下输入“<code>:10,15s/^/\/\//</code>”或者“<code>:10,15s@^@//@</code>”或者“<code>:10,15s#^#//#</code>”</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>注意</strong>：在上面所有命令的最后面都可以加g或者c一起配合使用，g的意思是行中出现的所有指定字符都替换，但是如果加了g那么前面就不能出现位置定义字符，反之前面出现的位置定义字符，那么后面就不可以出现g。在后面加c可以跟用户交互，在查找到符合命令的字符提示用户是否替换，需要用户确认，否则不需要确认</p>
<h2 id="11-把输入的指定字符替换为指定的字符"><a href="#11-把输入的指定字符替换为指定的字符" class="headerlink" title="11.把输入的指定字符替换为指定的字符"></a>11.把输入的指定字符替换为指定的字符</h2><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;例：在编辑一个文档的时候，我要频繁的输入“abcdefghijklmnopqrstuvwxyz”这样的连续字符串，这时候我想只输入一个或者一串指定字符就可以替换为刚才的字符，比如我指定输入“aming”系统就会自动把“aming”替换成“abcdefghijklmnopqrstuvwxyz”<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;在一般模式下输入“<code>:ab aming abcdefghijklmnopqrstuvwxyz</code>”然后回车，再进入编辑模式，当你输入“aming”的时候就会发现自动替换成了“abcdefghijklmnopqrstuvwxyz”</p>
<h2 id="12-快捷键的定义"><a href="#12-快捷键的定义" class="headerlink" title="12.快捷键的定义"></a>12.快捷键的定义</h2><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;例：我想在一般模式下按键盘上的ctrl+b快捷键，会自动在光标所在行的行首插入“#”号，然后自动退出到一般模式<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;在一般模式下输入“<code>:map ctrl+v ctrl+b I #</code>”然后回车，这时候在一般模式按键盘上的ctrl+b的时候就会在光标所在的行首插入“#”号了</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>注意</strong>：命令中<code>ctrl+v</code>和<code>ctrl+b</code>是键盘上的组合键，不是输入进去的字符，是需要按的组合键，其中第一个ctrl+v就照按，第二个ctrl+b是要定义的快捷键，根据自己需要的设置按。然后“I”的意思就是一般模式下的“I”进入插入模式并将光标移动到行首，然后接着输入“#”号，后面“”的意思是退出编辑模式</p>
<h2 id="13-同进编辑两个文件或者"><a href="#13-同进编辑两个文件或者" class="headerlink" title="13.同进编辑两个文件或者"></a>13.同进编辑两个文件或者</h2><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;例：我现正在编辑１.txt文件，然后我想再打开root目录下的2.txt同时编辑，并把窗口上下水平分隔，一起显示<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;在一般模式下输入“<code>:new /root/2.txt</code>”</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;例：我现正在编辑１.txt文件，然后我想再打开root目录下的2.txt同时编辑，并把窗口左右垂直分隔，一起显示<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;在一般模式下输入“<code>:vsplit /root/2.txt</code>”</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>注意</strong>：在一般模式下按“<code>ctrl+w</code>”组合键，再按左右，或者上下方向键，可以在不同窗口之间切换如果在一般模式下输入“<code>:only</code>”那么只保留当前正在编辑的窗口，其它全关闭</p>
<h2 id="15-在vim查找关键字时不区分大小写"><a href="#15-在vim查找关键字时不区分大小写" class="headerlink" title="15.在vim查找关键字时不区分大小写"></a>15.在vim查找关键字时不区分大小写</h2><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;在一般模式下输入“<code>:set ic</code>”</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;如果想取消就输入“<code>:set noic</code>”</p>
<h2 id="16-如何把文件设置成只读文件，只有强制保存时才能保存"><a href="#16-如何把文件设置成只读文件，只有强制保存时才能保存" class="headerlink" title="16.如何把文件设置成只读文件，只有强制保存时才能保存"></a>16.如何把文件设置成只读文件，只有强制保存时才能保存</h2><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;在一般模式下输入“<code>:set readonly</code>”</p>
<h2 id="17-把文件恢复到打开时的状态"><a href="#17-把文件恢复到打开时的状态" class="headerlink" title="17.把文件恢复到打开时的状态"></a>17.把文件恢复到打开时的状态</h2><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;在一般模式下输入“<code>:e!</code>”</p>
<h2 id="18-配置文件的使用"><a href="#18-配置文件的使用" class="headerlink" title="18.配置文件的使用"></a>18.配置文件的使用</h2><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;以上那么多操作，像设置忽略大小写，设定快捷键，设定自动替换，等一些操作，当电脑重启后就没有了。这时候我们可以把这些命令写入配置文件，这样电脑重启后还是可以使用，我们有两种方法</p>
<ul>
<li>第一种：所有用户都统一<br>修改“<code>/etc/vimrc</code>”文件，在末尾加入需要设置的命令，就是我红色标注的部分</li>
<li>第二种：只对当前用户<br>修改用户家目录下的“.vimrc”文件，注意有个点，这是隐藏文件，一般用户家下没有，需要自己手工创建</li>
</ul>

	

	

</article>




	<article>
	
		<h1><a href="/2017/10/12/1. Linux 基础/3. Linux 快捷键/">Linux 快捷键</a></h1>
	
	<div class="article__infos">
		<span class="article__date">2017-10-12</span><br />
		
		
			<span class="article__tags">
			  	<a class="article__tag-link" href="/tags/Linux/">Linux</a>
			</span>
		
	</div>

	

	
		<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<code>ctrl+a</code>:光标移到行首。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<code>ctrl+b</code>:光标左移一个字母</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<code>ctrl+c</code>:杀死当前进程。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<code>ctrl+d</code>:退出当前 Shell。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<code>ctrl+e</code>:光标移到行尾。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<code>ctrl+h</code>:删除光标前一个字符，同 backspace 键相同。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<code>ctrl+k</code>:清除光标后至行尾的内容。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<code>ctrl+l</code>:清屏，相当于clear。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<code>ctrl+r</code>:搜索之前打过的命令。会有一个提示，根据你输入的关键字进行搜索bash的history</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<code>ctrl+u</code>: 清除光标前至行首间的所有内容。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<code>ctrl+w</code>: 移除光标前的一个单词</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<code>ctrl+t</code>: 交换光标位置前的两个字符</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<code>ctrl+y</code>: 粘贴或者恢复上次的删除</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<code>ctrl+d</code>: 删除光标所在字母;注意和backspace以及ctrl+h的区别，这2个是删除光标前的字符</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<code>ctrl+f</code>: 光标右移</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<code>ctrl+z</code> : 把当前进程转到后台运行，使用’ fg ‘命令恢复。比如top -d1 然后ctrl+z ，到后台，然后fg,重新恢复</p>

	

	

</article>




	<article>
	
		<h1><a href="/2017/10/12/1. Linux 基础/29. vim百科/">vim百科</a></h1>
	
	<div class="article__infos">
		<span class="article__date">2017-10-12</span><br />
		
		
			<span class="article__tags">
			  	<a class="article__tag-link" href="/tags/Linux/">Linux</a>
			</span>
		
	</div>

	

	
		<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Vim是从vi发展出来的一个文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰富，在程序员中被广泛使用。和Emacs并列成为类Unix系统用户最喜欢的编辑器。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Vim的第一个版本由布莱姆·米勒在1991年发布。最初的简称是Vi IMitation，随着功能的不断增加，正式名称改成了Vi IMproved。现在是在开放源代码方式下发行的自由软件。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;布莱姆·米勒在80年代末购入他的Amiga计算机时，Amiga上还没有他最常用的编辑器vi。Bram从一个开源的vi复制Stevie开始，开发了Vim的1.0版本。最初的目标只是完全复制vi的功能，那个时候的Vim是Vi IMitation（模拟）的简称。1991年Vim 1.14版被”Fred Fish Disk #591”这个Amiga用的免费软体集所收录了。1992年1.22版本的Vim被移植到了UNIX和MS-DOS上。从那个时候开始，Vim的全名就变成Vi IMproved（改良）了。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;在这之后，Vim加入了不计其数的新功能。做为第一个里程碑的是1994年的3.0版本加入了多视窗编辑模式（分区视窗）。从那之后，同一萤幕可以显示的Vim编辑文件数可以不止一个了。1996年发布的Vim 4.0是第一个利用GUI（图形用户界面）的版本。1998年5.0版本的Vim加入了highlight（语法高亮）功能。2001年的Vim 6.0版本加入了代码折叠、插件、多国语言支持、垂直分区视窗等功能。2006 年5月发布的Vim 7.0版更加入了拼字检查、上下文相关补全，标签页编辑等新功能。2008年8月发布的Vim 7.2，合并了Vim 7.1以来的所有修正补丁，并且加入了脚本的浮点数支持。现在最新的版本是2010年8月发布的Vim 7.3，这个版本除了包含最新修正的补丁之外，还加入了“永久撤销”、“Blowfish算法加密”、“文本隐藏”和“Lua以及Python3的接口”等新功能。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;目前, VIM是按照VIM许可证发布的开源软件，这个协议兼容GPL。它的协议中包含一些慈善条款，建议用户向荷兰ICCF捐款，用于帮助乌干达的艾滋病患者. VIM启动时会显示Help poor children in Uganda!的字样，在中文版本中则是请帮助乌干达的可怜孩童!.</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;对于大多数用户来说，Vim有着一个比较陡峭的学习曲线。这意味着开始学习的时候可能会进展缓慢，但是一旦掌握一些基本操作之后，能大幅度提高编辑效率。为了帮助学习，Vim为初学者准备了Vim教学。通常可以在Unix系统命令行下输入”vimtutor”或者点击Windows系统桌面上的Vim教学图标进入。在Vim用户手册 中更加详细的描述了Vim的基础和进阶功能。可以在Vim中输入”:help user-manual”进入用户手册。手册除了原始的英文版本之外，也被志愿者翻译成了各国文字，其中包括中文。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;新用户也应该学习Vim的帮助系统。可以在Vim中输入不带参数的”help”来阅读主帮助文件。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;从vi演生出来的Vim具有多种模式，这种独特的设计容易使初学者产生混淆。几乎所有的编辑器都会有插入和执行命令两种模式，并且大多数的编辑器使用了与Vim截然不同的方式：命令目录（鼠标或者键盘驱动），组合键（通常通过control键（CTRL）和alt键（ALT）组成）或者鼠标输入。Vim和vi一样，仅仅通过键盘来在这些模式之中切换。这就使得Vim可以不用进行菜单或者鼠标操作，并且最小化组合键的操作。对文字录入员或者程序员可以大大增强速度和效率。</p>

	

	

</article>




	<article>
	
		<h1><a href="/2017/10/12/1. Linux 基础/28.建立一个swap文件增加虚拟内存/">建立一个swap文件增加虚拟内存</a></h1>
	
	<div class="article__infos">
		<span class="article__date">2017-10-12</span><br />
		
		
			<span class="article__tags">
			  	<a class="article__tag-link" href="/tags/Linux/">Linux</a>
			</span>
		
	</div>

	

	
		<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;从装系统时就接触过这个swap了，它类似与windows的虚拟内存，分区的时候一般大小为内存的2倍，如果内存超过8G，那么你分16G似乎是没有必要了。分16G足够日常交换了。然而，还会有虚拟内存不够用的情况发生。如果真遇到了，莫非还要重新给磁盘分区？当然不能，那我们就增加一个虚拟的磁盘出来。基本的思路就是：建立swapfile -&gt; 格式化为swap格式 -&gt; 启用该虚拟磁盘。</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div></pre></td><td class="code"><pre><div class="line">[root@localhost ~]<span class="comment"># dd if=/dev/zero of=/tmp/newdisk bs=4k count=102400</span></div><div class="line">记录了102400+0 的读入</div><div class="line">记录了102400+0 的写出</div><div class="line">419430400字节(419 MB)已复制，2.59193 秒，162 MB/秒</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;“dd” 这个命令会经常用到，所以要掌握它的使用方法，其实也不难，用 “if” 指定源，基本上除了 “/dev/zero” 外基本上不会写别的，而/dev/zero 是UNIX系统特有的一个文件，它可以提供源源不断的 “0”, 关于它的其他信息请你在网上查一下资料。 “of” 指定目标文件， “bs” 定义块的大小， “count” 定义块的数量，这两个参数的多少决定了目标文件的大小，目标文件大小 = bs x count. 用dd建了一个大小为400M的文件，然后格式化成swap格式：</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div></pre></td><td class="code"><pre><div class="line">[root@localhost ~]# mkswap -f /tmp/newdisk</div><div class="line">Setting up swapspace version 1, size = 409596 KiB</div><div class="line">no label, UUID=29832cab-04b9-4083-a667-9a5795a5d490</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;格式化完后，就可以挂载上使用了：</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div></pre></td><td class="code"><pre><div class="line">[root@localhost ~]<span class="comment"># free -m</span></div><div class="line">          total       used       free     shared    buffers     cached</div><div class="line">Mem:           318        314          4          0          5        278</div><div class="line">-/+ buffers/cache:         30        288</div><div class="line">Swap:         2047          0       2047</div><div class="line">[root@localhost ~]<span class="comment"># swapon /tmp/newdisk</span></div><div class="line">[root@localhost ~]<span class="comment"># free -m</span></div><div class="line">             total       used       free     shared    buffers     cached</div><div class="line">Mem:           318        314          4          0          5        278</div><div class="line">-/+ buffers/cache:         31        287</div><div class="line">Swap:         2447          0       2447</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;前后对比swap分区多了400M空间。其中 “free” 这个命令用来查看内存使用情况， “-m” 表示以M为单位显示</p>

	

	

</article>




	<article>
	
		<h1><a href="/2017/10/12/1. Linux 基础/27.磁盘配额/">磁盘配额</a></h1>
	
	<div class="article__infos">
		<span class="article__date">2017-10-12</span><br />
		
		
			<span class="article__tags">
			  	<a class="article__tag-link" href="/tags/Linux/">Linux</a>
			</span>
		
	</div>

	

	
		<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;磁盘配合其实就是给每个用户分配一定的磁盘额度，只允许他使用这个额度范围内的磁盘空间。在linux系统中，是多用户多任务的环境，所以会有很多人共用一个磁盘的情况。针对每个用户去限定一定量的磁盘空间是有必要的，这样才显得公平。随着硬件成本的降低，服务器上的磁盘资源似乎不再刻意的去限制了，所以磁盘配额也就可有可无了，但是也需要了解一下这部分内容，用到时必须会操作。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;在linux中，用来管理磁盘配额的东西就是quota了。如果linux上没有quota，则需要安装这个软件包 quota-3.13-5.el5.RPM （其实版本是多少无所谓了，关键是这个软件包）。quota在实际应用中是针对整个分区进行限制的。比如，如果我们限制了/dev/sdb1这个分区，而/dev/sdb1 是挂载在/home 目录下的，那么/home 所有目录都会受到限制。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;quota 这个模块主要分为quota 、quotacheck 、quotaoff 、quotaon 、quotastats 、edquota 、setquota 、warnquota 、repquota这几个命令，下面就分别介绍这些命令。</p>
<h2 id="命令-quota"><a href="#命令-quota" class="headerlink" title="命令 : quota"></a>命令 : quota</h2><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;“quota” 用来显示某个组或者某个使用者的限额。</p>
<h3 id="语法："><a href="#语法：" class="headerlink" title="语法："></a>语法：</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">quota [-guvs] [user,group]</div></pre></td></tr></table></figure>
<h3 id="基本参数"><a href="#基本参数" class="headerlink" title="基本参数"></a>基本参数</h3><ul>
<li>-g 显示某个组的限额</li>
<li>-u 显示某个用户的限额</li>
<li>-v 显示的意思</li>
<li>-s 选择inod或硬盘空间来显示</li>
</ul>
<h2 id="命令-quotacheck"><a href="#命令-quotacheck" class="headerlink" title="命令 : quotacheck"></a>命令 : quotacheck</h2><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;“quotacheck” 用来扫描某一个磁盘的quota空间。</p>
<h3 id="语法：-1"><a href="#语法：-1" class="headerlink" title="语法："></a>语法：</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">quotacheck [-auvg] /path</div></pre></td></tr></table></figure>
<h3 id="基本参数-1"><a href="#基本参数-1" class="headerlink" title="基本参数"></a>基本参数</h3><ul>
<li>-a 扫描所有已经mount的具有quota支持的磁盘</li>
<li>-u 扫描某个使用者的文件以及目录</li>
<li>-g 扫描某个组的文件以及目录</li>
<li>-v 显示扫描过程</li>
<li>-m 强制进行扫描</li>
</ul>
<h2 id="命令-edquota"><a href="#命令-edquota" class="headerlink" title="命令 : edquota"></a>命令 : edquota</h2><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;“edquota” 用来编辑某个用户或者组的quota值。</p>
<h3 id="语法：-2"><a href="#语法：-2" class="headerlink" title="语法："></a>语法：</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">edquota [-u user] [-g group] [-t]</div></pre></td></tr></table></figure>
<h3 id="基本参数-2"><a href="#基本参数-2" class="headerlink" title="基本参数"></a>基本参数</h3><ul>
<li>-u 编辑某个用户的quota</li>
<li>-g 编辑某个组的quota</li>
<li>-t 编辑宽限时间</li>
<li>-p 拷贝某个用户或组的quota到另一个用户或组</li>
</ul>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;当运行 <code>edquota -u user</code> 时，系统会打开一个文件，你会看到这个文件中有7列，它们分别代表的含义是：</p>
<ul>
<li>“Filesystem” 磁盘分区，如/dev/sdb5</li>
<li>“blocks” 当前用户在当前的Filesystem中所占用的磁盘容量，单位是Kb。该值请不要修改。</li>
<li>“soft/hard” 当前用户在该Filesystem内的quota值，soft指的是最低限额，可以超过这个值，但必须要在宽限时间内将磁盘容量降低到这个值以下。hard指的是最高限额，即不能超过这个值。当用户的磁盘使用量高于soft值时，系统会警告用户，提示其要在宽限时间内把使用空间降低到soft值之下。</li>
<li>“inodes” 目前使用掉的inode的状态，不用修改。</li>
</ul>
<h2 id="命令-quotaon"><a href="#命令-quotaon" class="headerlink" title="命令 : quotaon"></a>命令 : quotaon</h2><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;“quotaon” 用来启动quota，在编辑好quota后，需要启动才能是quota生效</p>
<h3 id="语法：-3"><a href="#语法：-3" class="headerlink" title="语法："></a>语法：</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">quotaon [-a] [-uvg directory]</div></pre></td></tr></table></figure>
<h3 id="基本参数-3"><a href="#基本参数-3" class="headerlink" title="基本参数"></a>基本参数</h3><ul>
<li>-a 全部设定的quota启动</li>
<li>-u 启动某个用户的quota</li>
<li>-g 启动某个组的quota</li>
<li>-s 显示相关信息</li>
</ul>
<h2 id="命令-quotaoff"><a href="#命令-quotaoff" class="headerlink" title="命令 : quotaoff"></a>命令 : quotaoff</h2><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;“quotaoff” 用来关闭quota, 该命令常用只有一种情况 quotaoff -a 关闭全部的quota.</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;以上讲了很多quota的相关命令，那么接下来阿铭教你如何在实践应用中去做这个磁盘配额。整个执行过程如下：</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;首先先确认一下，/home目录是不是单独的挂载在一个分区下，用df 查看即可。</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div></pre></td><td class="code"><pre><div class="line">文件系统                 1K-块      已用      可用 已用% 挂载点</div><div class="line">/dev/sda3             14347632   1899376  11719424  14% /</div><div class="line">tmpfs                   163308         0    163308   0% /dev/shm</div><div class="line">/dev/sda1                99150     26808     67222  29% /boot</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;上例linux系统中，/home并没有单独占用一个分区。所以需要把/home目录挂载在一个单独的分区下，因为quota是针对分区来限额的。下面把 /dev/sdb5 挂载到/home 目录下， 编辑 /etc/fstab 把刚才添加的那行修改为：</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">UUID=c61117ca-9176-4d0b-be4d-1b0f434359a7              /home                 ext4    defaults        0 0</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;保存 /etc/fstab 后，运行 mount -a 命令挂载全部的分区。</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div></pre></td><td class="code"><pre><div class="line">[root@localhost ~]<span class="comment"># mount -a</span></div><div class="line">[root@localhost ~]<span class="comment"># df -h</span></div><div class="line">文件系统              容量  已用  可用 已用%% 挂载点</div><div class="line">/dev/sda3              14G  1.9G   12G  14% /</div><div class="line">tmpfs                 160M     0  160M   0% /dev/shm</div><div class="line">/dev/sda1              97M   27M   66M  29% /boot</div><div class="line">/dev/sdb5             989M   18M  921M   2% /home</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;此时的 /home 为一个单独分区了。</p>
<ol>
<li>建立测试账户<br>首先建立一个test用户，则同时建立了一个test组。其中uid和gid都为511 ，然后又建立一个test1账号，使其加入test组，查看/etc/passwd文件发现test和test1用户的gid都为511.</li>
</ol>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div></pre></td><td class="code"><pre><div class="line">[root@localhost ~]<span class="comment"># useradd test</span></div><div class="line">[root@localhost ~]<span class="comment"># grep test /etc/passwd</span></div><div class="line"><span class="built_in">test</span>:x:511:511::/home/<span class="built_in">test</span>:/bin/bash</div><div class="line">[root@localhost ~]<span class="comment"># useradd -g 511 test1</span></div><div class="line">[root@localhost ~]<span class="comment"># grep test1 /etc/passwd</span></div><div class="line">test1:x:512:511::/home/test1:/bin/bash</div></pre></td></tr></table></figure>
<ol>
<li>打开磁盘的quota功能<br>默认linux并没有对任何分区做quota的支持，所以需要我们手动打开磁盘的quota功能，你是否记得，在前面内容中分析/etc/fstab文件的第四列时讲过这个quota选项（usrquota, grpquota），没错，要想打开这个磁盘的quota支持就是需要修改这个第四列的。用vi编辑/etc/fstab 编辑刚才加的那一行，如下:</li>
</ol>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">UUID=c61117ca-9176-4d0b-be4d-1b0f434359a7     /home        ext4    defaults,usrquota,grpquota     0 0</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;保存 /etc/fstab 后，重新挂载/home分区。</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div></pre></td><td class="code"><pre><div class="line">[root@localhost ~]<span class="comment"># umount /home/</span></div><div class="line">[root@localhost ~]<span class="comment"># mount -a</span></div><div class="line">[root@localhost ~]<span class="comment"># mount</span></div><div class="line">/dev/sda3 on / <span class="built_in">type</span> ext4 (rw)</div><div class="line">proc on /proc <span class="built_in">type</span> proc (rw)</div><div class="line">sysfs on /sys <span class="built_in">type</span> sysfs (rw)</div><div class="line">devpts on /dev/pts <span class="built_in">type</span> devpts (rw,gid=5,mode=620)</div><div class="line">tmpfs on /dev/shm <span class="built_in">type</span> tmpfs (rw)</div><div class="line">/dev/sda1 on /boot <span class="built_in">type</span> ext4 (rw)</div><div class="line">none on /proc/sys/fs/binfmt_misc <span class="built_in">type</span> binfmt_misc (rw)</div><div class="line">/dev/sdb5 on /home <span class="built_in">type</span> ext4 (rw,usrquota,grpquota)</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;使用 mount 命令可以查看到 /home 分区已经加上了 “usrquota,grpquota” 两个配额相关的参数。</p>
<ol>
<li>扫描磁盘的使用者使用状况，并产生重要的aquota.group与aquota.user<br>这一步就需要用到quotacheck了，aquota.group与aqouta.user分别是组以及用户磁盘配额需要的配置文件。如果没有这两个文件，则磁盘配额是不会生效的。</li>
</ol>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">[root@localhost ~]<span class="comment"># quotacheck -augv</span></div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;可能会有一些错误信息，不要管它。看一看/home分区下是否多了两个文件(aquota.group, aquota.user)</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div></pre></td><td class="code"><pre><div class="line">[root@localhost ~]<span class="comment"># ll /home/</span></div><div class="line">总用量 44</div><div class="line">-rw------- 1 root  root  7168 5月  12 02:07 aquota.group</div><div class="line">-rw------- 1 root  root  8192 5月  12 02:07 aquota.user</div><div class="line">drwxr-xr-x 2 root  root  4096 5月  12 00:11 dir1</div><div class="line">drwx------ 2 root  root 16384 5月  11 23:18 lost+found</div><div class="line">drwx------ 3 <span class="built_in">test</span>  <span class="built_in">test</span>  4096 5月  12 01:59 <span class="built_in">test</span></div><div class="line">drwx------ 3 test1 <span class="built_in">test</span>  4096 5月  12 02:00 test1</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;如果有了，则可以进入下一步了。</p>
<ol>
<li>启动quota配额</li>
</ol>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div></pre></td><td class="code"><pre><div class="line">[root@localhost ~]<span class="comment"># quotaon -av</span></div><div class="line">/dev/sdb5 [/home]: group quotas turned on</div><div class="line">/dev/sdb5 [/home]: user quotas turned on</div></pre></td></tr></table></figure>
<ol>
<li>编辑用户磁盘配额<br>先来设定test账户的配额，然后直接把test的配额拷贝给test1即可。这里就需要用到edquota了。</li>
</ol>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">[root@localhost ~]<span class="comment"># edquota -u test</span></div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;将下面内容</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">/dev/sdb5                        20          0          0          5        0        0</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;修改为：</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">/dev/sdb5                        20          20000          30000          5        0        0</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;其中单位是Kb，所以soft 值大约为20Mb，hard值为30Mb，保存这个文件，保存的方式跟vi一个文件的方式一样的。下面将test的配额复制给test1.</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">[root@localhost ~]<span class="comment"># edquota -p test test1</span></div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;下面继续设定宽限时间：</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">[root@localhost ~]<span class="comment"># edquota -t</span></div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;将7days 改为 1days</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">/dev/sdb5                     1days                  1days</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;下面查看一下test以及test1用户的配额吧。</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div></pre></td><td class="code"><pre><div class="line">[root@localhost ~]<span class="comment"># quota -uv test test1</span></div><div class="line">Disk quotas <span class="keyword">for</span> user <span class="built_in">test</span> (uid 511):</div><div class="line">     Filesystem  blocks   quota   <span class="built_in">limit</span>   grace   files   quota   <span class="built_in">limit</span>   grace</div><div class="line">      /dev/sdb5      20   20000   30000               5       0       0</div><div class="line">Disk quotas <span class="keyword">for</span> user test1 (uid 512):</div><div class="line">     Filesystem  blocks   quota   <span class="built_in">limit</span>   grace   files   quota   <span class="built_in">limit</span>   grace</div><div class="line">      /dev/sdb5      20   20000   30000               5       0       0</div></pre></td></tr></table></figure>
<ol>
<li>编辑组磁盘配额</li>
</ol>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">[root@localhost ~]<span class="comment"># edquota -g test</span></div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;修改为：</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">/dev/sdb5                        40          40000          50000         10        0        0</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;设定组test的soft配额值为40M，hard值为50M。下面查看组test的配额。</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div></pre></td><td class="code"><pre><div class="line">[root@localhost ~]<span class="comment"># quota -gv test</span></div><div class="line">Disk quotas <span class="keyword">for</span> group <span class="built_in">test</span> (gid 511):</div><div class="line">     Filesystem  blocks   quota   <span class="built_in">limit</span>   grace   files   quota   <span class="built_in">limit</span>   grace</div><div class="line">      /dev/sdb5      40   40000   50000              10       0       0</div></pre></td></tr></table></figure>
<ol>
<li>设定开机启动<br>前面已经讲到启动磁盘配额的命令是 quotaon -aug 所以要想开机启动，只需将这条命令加入到 /etc/rc.d/rc.local文件即可。</li>
</ol>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">[root@localhost ~]<span class="comment"># echo "quotaon -aug" &gt;&gt; /etc/rc.d/rc.local</span></div></pre></td></tr></table></figure>
	

	

</article>




	<article>
	
		<h1><a href="/2017/10/12/1. Linux 基础/26.增加磁盘的inode数/">增加磁盘的inode数</a></h1>
	
	<div class="article__infos">
		<span class="article__date">2017-10-12</span><br />
		
		
			<span class="article__tags">
			  	<a class="article__tag-link" href="/tags/Linux/">Linux</a>
			</span>
		
	</div>

	

	
		<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;inode这个词大多资料都是译为索引节点，在ext3文件系统，调整磁盘的inode number。这里只是调整inode number这个参数，如果想调整inode size或是blocksize等可以具体mkfs.ext3命令。</p>
<ol>
<li>卸载文件系统</li>
</ol>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line"><span class="comment"># umount /dev/sda6</span></div></pre></td></tr></table></figure>
<ol>
<li>建立文件系统，指定inode节点数</li>
</ol>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div></pre></td><td class="code"><pre><div class="line"><span class="comment"># mkfs.ext3 /dev/sda6 -N "inode节点数"</span></div><div class="line"><span class="comment">## mkfs.ext3 命令的-N  选项用于指定自定义的inode节点数</span></div></pre></td></tr></table></figure>
<ol>
<li>挂载文件系统</li>
</ol>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line"><span class="comment">#  mout  /dev/sda6  /data</span></div></pre></td></tr></table></figure>
<ol>
<li>查看修改后的inode参数</li>
</ol>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line"><span class="comment"># dumpe2fs -h /dev/sda6 | grep node</span></div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>注意</strong>:调整inode数会格式化磁盘，执行前应确定磁盘上没有重要数据或是先备份数据</p>

	

	

</article>




	<article>
	
		<h1><a href="/2017/10/12/1. Linux 基础/24. ext4，ext3的特点和区别/">ext4，ext3的特点和区别</a></h1>
	
	<div class="article__infos">
		<span class="article__date">2017-10-12</span><br />
		
		
			<span class="article__tags">
			  	<a class="article__tag-link" href="/tags/Linux/">Linux</a>
			</span>
		
	</div>

	

	
		<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Linux kernel 自 2.6.28 开始正式支持新的文件系统 Ext4。 Ext4 是 Ext3 的改进版，修改了 Ext3 中部分重要的数据结构，而不仅仅像 Ext3 对 Ext2 那样，只是增加了一个日志功能而已。Ext4 可以提供更佳的性能和可靠性，还有更为丰富的功能：</p>
<ol>
<li><p>与 Ext3 兼容。 执行若干条命令，就能从 Ext3 在线迁移到 Ext4，而无须重新格式化磁盘或重新安装系统。原有 Ext3 数据结构照样保留，Ext4 作用于新数据，当然，整个文件系统因此也就获得了 Ext4 所支持的更大容量。</p>
</li>
<li><p>更大的文件系统和更大的文件。 较之 Ext3 目前所支持的最大 16TB 文件系统和最大 2TB 文件，Ext4 分别支持 1EB（1,048,576TB， 1EB=1024PB， 1PB=1024TB）的文件系统，以及 16TB 的文件。</p>
</li>
<li><p>无限数量的子目录。 Ext3 目前只支持 32,000 个子目录，而 Ext4 支持无限数量的子目录。</p>
</li>
<li><p>Extents。 Ext3 采用间接块映射，当操作大文件时，效率极其低下。比如一个 100MB 大小的文件，在 Ext3 中要建立 25,600 个数据块（每个数据块大小为 4KB）的映射表。而 Ext4 引入了现代文件系统中流行的 extents 概念，每个 extent 为一组连续的数据块，上述文件则表示为“该文件数据保存在接下来的 25,600 个数据块中”，提高了不少效率。</p>
</li>
<li><p>多块分配。 当 写入数据到 Ext3 文件系统中时，Ext3 的数据块分配器每次只能分配一个 4KB 的块，写一个 100MB 文件就要调用 25,600 次数据块分配器，而 Ext4 的多块分配器“multiblock allocator”（mballoc） 支持一次调用分配多个数据块。</p>
</li>
<li><p>延迟分配。 Ext3 的数据块分配策略是尽快分配，而 Ext4 和其它现代文件操作系统的策略是尽可能地延迟分配，直到文件在 cache 中写完才开始分配数据块并写入磁盘，这样就能优化整个文件的数据块分配，与前两种特性搭配起来可以显著提升性能。</p>
</li>
<li><p>快速 fsck。 以前执行 fsck 第一步就会很慢，因为它要检查所有的 inode，现在 Ext4 给每个组的 inode 表中都添加了一份未使用 inode 的列表，今后 fsck Ext4 文件系统就可以跳过它们而只去检查那些在用的 inode 了。</p>
</li>
<li><p>日志校验。 日志是最常用的部分，也极易导致磁盘硬件故障，而从损坏的日志中恢复数据会导致更多的数据损坏。Ext4 的日志校验功能可以很方便地判断日志数据是否损坏，而且它将 Ext3 的两阶段日志机制合并成一个阶段，在增加安全性的同时提高了性能。</p>
</li>
<li><p>“无日志”（No Journaling）模式。 日志总归有一些开销，Ext4 允许关闭日志，以便某些有特殊需求的用户可以借此提升性能。</p>
</li>
<li><p>在线碎片整理。 尽管延迟分配、多块分配和 extents 能有效减少文件系统碎片，但碎片还是不可避免会产生。Ext4 支持在线碎片整理，并将提供 e4defrag 工具进行个别文件或整个文件系统的碎片整理。</p>
</li>
<li><p>inode 相关特性。 Ext4 支持更大的 inode，较之 Ext3 默认的 inode 大小 128 字节，Ext4 为了在 inode 中容纳更多的扩展属性（如纳秒时间戳或 inode 版本），默认 inode 大小为 256 字节。Ext4 还支持快速扩展属性（fast extended attributes）和 inode 保留（inodes reservation）。</p>
</li>
<li><p>持久预分配（Persistent preallocation）。 P2P 软件为了保证下载文件有足够的空间存放，常常会预先创建一个与所下载文件大小相同的空文件，以免未来的数小时或数天之内磁盘空间不足导致下载失败。 Ext4 在文件系统层面实现了持久预分配并提供相应的 API（libc 中的 posix_fallocate()），比应用软件自己实现更有效率。</p>
</li>
<li><p>默认启用 barrier。 磁 盘上配有内部缓存，以便重新调整批量数据的写操作顺序，优化写入性能，因此文件系统必须在日志数据写入磁盘之后才能写 commit 记录，若 commit 记录写入在先，而日志有可能损坏，那么就会影响数据完整性。Ext4 默认启用 barrier，只有当 barrier 之前的数据全部写入磁盘，才能写 barrier 之后的数据。（可通过 “mount -o barrier=0” 命令禁用该特性。）</p>
</li>
</ol>

	

	

</article>





	<span class="different-posts">📖 <a href="/page/62">more posts</a> 📖</span>



	</main>

	<footer class="footer">
	<div class="footer-content">
		
	      <div class="footer__element">
	<p>Hi there, <br />welcome to my Blog glad you found it. Have a look around, will you?</p>
</div>

	    
	      <div class="footer__element">
	<h5>Check out</h5>
	<ul class="footer-links">
		<li class="footer-links__link"><a href="/archives">Archive</a></li>
		
		  <li class="footer-links__link"><a href="/atom.xml">RSS</a></li>
	    
		<li class="footer-links__link"><a href="/about">about page</a></li>
		<li class="footer-links__link"><a href="/tags">Tags</a></li>
		<li class="footer-links__link"><a href="/categories">Categories</a></li>
	</ul>
</div>

	    

		<div class="footer-credit">
			<span>© 2017 失落的乐章 | Powered by <a href="https://hexo.io/">Hexo</a> | Theme <a href="https://github.com/HoverBaum/meilidu-hexo">MeiliDu</a></span>
		</div>

	</div>


</footer>



</body>

</html>
